A virtual machine is a software implementation of a machine (computer) that includes its own operating system (referred to as a guest operating system) and executes application programs. A host computer allocates a certain amount of its resources to each of the virtual machines, and multiplexes its underlying hardware platform among the virtual machines. Each virtual machine is then able to use the allocated resources to execute its guest operating system and applications. The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor, or part of a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.
A host computer can run multiple virtual machines simultaneously. Multiple host computers can be clustered together to provide a large number of virtual machines to an enterprise. During the course of time, some of the hosts in a cluster may become overloaded and some under-loaded. Load imbalance can cause performance degradation. Thus, there is a need to manage the load on the hosts.